package movilmax.sia_corp.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import java.io.File;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.FileUtils;


import movilmax.sia_corp.model.ListaSs;
import movilmax.sia_corp.model.Listax;
import movilmax.sia_corp.model.Usuario;
import utilidades.Cadena;
import basedatos.Fecha;
import basedatos.Resultado;
import apli.conectar.Conectar;


public class RegistroPreContrato extends ActionSupport{
	private static final long serialVersionUID = -3558263113079281766L;
	
	private Conectar BASE;
	private List<Listax> lst_sucursales;
	private List<Listax> lst_servicios;
	private List<Listax> lst_productos;
	private List<Listax> lst_precios;
	
	private String cod_precontrato;
	private String cod_prospecto;
	private List<ListaSs> tabla_prec;
	private String cod_item;
	private String contrato;
	private String tipo;
	private String sucursal;
	private String servicio;
	private String producto;
	private String precio;
    private String status;
    private String fecha;
    private String obs;
    private String obs_status;
	
    private String id_obj;
    private String sel;
    private String val;
	private File archivo;
	private String archivoContentType;
	private String archivoFileName;
    
	
	@SuppressWarnings("rawtypes")
	public void validate(){	
		try{	
				if ( this.getCod_prospecto().length() == 0 ){	
					this.addActionError("Debe cargar el prospecto" );
					return;
				}
				if ( this.getCod_precontrato().length() == 0 ){	
					this.addActionError("Codigo precontrato invalido" );
					return;
				}
				if ( this.getObs().length() == 0 ){	
					 this.addActionError( "Debe ingresar las observaciones" );
					 return;
				}
				if(this.archivo!=null){
					if ( this.getArchivoFileName().length() == 0 ){	
						this.addActionError( "Debe seleccionar el archivo con el precontrato que desea cargar" );
						return;
					}
					if(!this.getArchivoContentType().trim().equals("application/pdf")){
						 this.addActionError("El tipo de archivo :"+ this.getArchivoContentType() +" no es valido, solo se permiten archivo PDF" );
				    	 return;
			    	}
				}else{
					this.addActionError( "Debe seleccionar el archivo con el precontrato que desea cargar" );
					return;
				}
				Cadena C=new Cadena();
				
				LinkedList lst_suc=C.tokens(this.getSucursal(), ",");
	  	    	LinkedList lst_ser=C.tokens(this.getServicio(), ",");
	  	    	LinkedList lst_pro=C.tokens(this.getProducto(), ",");
	  	    	LinkedList lst_con=C.tokens(this.getContrato(), ",");
				int ctd_val1=0,ctd_val2=0,ctd_val3=0,tt_serv_datos=0;
				boolean vd=false;
	  	    	for(int i=0;i< lst_suc.size();i++){
	  	    		if(!lst_suc.get(i).toString().trim().equals("-1") && !lst_suc.get(i).toString().trim().equals("") ){
	  	    			 ctd_val1++;
	  	    			 //cliente puede tener n cantidad de contratos x sucursal
	  	    			 if(lst_con.get(i).toString().length()<10 ){
		  					  this.addActionError( "Fila "+i+"=El numero de contrato debe contener como minimo 10 caracteres" );
		  					  return;
		  				 }
	  	    		}
	  	    			
	  	    		if(!lst_ser.get(i).toString().trim().equals("-1") && !lst_ser.get(i).toString().trim().equals("") )
	  	    			ctd_val2++;
	  	    		if(!lst_pro.get(i).toString().trim().equals("-1") && !lst_pro.get(i).toString().trim().equals("") )
	  	    			ctd_val3++;
	  	    		/*if(!lst_con.get(i).toString().trim().equals("-1") && !lst_con.get(i).toString().trim().equals("") )
	  	    			ctd_val4++;
*/
	  	    		if(lst_ser.get(i).toString().trim().equals("3") || lst_ser.get(i).toString().trim().equals("4") ){
	  	    			 tt_serv_datos++;
	  	    			 vd=true;
	  	    		}
	  	    		/*if(!lst_ser.get(i).toString().trim().equals("-1") ){
	  	    			tt_servicios++;
	 	    		}*/
	  	    	}
	  	    	/*
	  	    	if ( ctd_val4<lst_suc.size() ){	
					this.addActionError( "Debe indicar el numero de contrato en todas las filas" );
					return;
				}
	  	    	*/
	  	    	if ( ctd_val1==0 || ctd_val2==0 || ctd_val3==0 ){	
					this.addActionError( "Debe seleccionar sucursal,servicio y producto" );
					return;
				}
	  	    	for(int z=0;z<lst_suc.size(); z++){
					String dato1= lst_suc.get(z).toString().trim();
					String dato2= lst_ser.get(z).toString().trim();
					if(!dato1.equals("-1") && !dato2.equals("-1") ){
						int cp1=ninclusiones(lst_suc, dato1);
						int cp2=ninclusiones(lst_ser, dato2);
						if( cp1>1 && cp2>1 ){
							this.addActionError("Sucursal y servicio estan duplicados" );
							return;
						}
					}
			    }
				if(vd){
					if(tt_serv_datos<2){
		  				//this.addActionError("Para agregar el servicio de datos debe estar incluido en dos sucursales" );
						//return;
		  			}
				}

				int sucursales=0;
				BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI")){ 	
						Resultado RCS=BASE.getBaseDatos().consultar("Select count(*) as tt from corp_sucursales where prospecto='"+ this.getCod_prospecto() +"' and cliente='0' ");
						if(RCS.RP){
							sucursales=RCS.getInt("tt");
						}
						if(ninclusionesD(lst_suc)!=sucursales ){
							this.addActionError("Debe seleccionar al menos un servicio por sucursal" );
	  	  				    return;
						}
						for(int i=0;i< lst_suc.size();i++){
			  	    		if(lst_ser.get(i).toString().trim().equals("3") || lst_ser.get(i).toString().trim().equals("4") ){
			  	    			if(sucursales<2){
			  	    				//this.addActionError("Para agregar el servicio de datos deben existir dos sucursales como minimo" );
			  	  				   // return;
			  	    			}	
			  	    		}
			  	      }
					BASE.getBaseDatos().cerrarConexion();	
		    	  }
		    	//this.addActionMessage("OK" );
		    	
		}catch(Exception err){
			//this.addActionMessage( "Error="+err.toString() );	
		}
	} 
	@SuppressWarnings({ "rawtypes", "unchecked" })
	private int ninclusionesD(LinkedList lst){
		int n=0,c=0;
		String vx="";
		LinkedList lst_aux=new LinkedList ();
		for(int i=0;i< lst.size();i++ ){
			    vx=lst.get(i).toString().trim();
			    if(!vx.equals("-1")){
			    	n= ninclusiones(lst_aux,vx);	
		    		if( n==0 ){
		    			lst_aux.add(vx);
		    			c++;
		    		}
			    }
	    }	 
	    return c;
	}
	@SuppressWarnings("rawtypes")
	private int ninclusiones(LinkedList lst, String dato ){
		int n=0;
		String vx="";
		for(int i=0;i< lst.size();i++ ){
			    vx=lst.get(i).toString().trim();
	    		if( vx.equalsIgnoreCase(dato.trim()) ){
	    			n++;
	    		}
	    }	 
	    return n;
	}
	
	
    @SuppressWarnings("rawtypes")
	public String guardar_precontrato(){
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    if (USUARIO!=null){		
	    	BASE= new Conectar();
	    	if(BASE.getMsg().equals("SI")){	
	    		try{
	    			if ( this.getArchivoFileName().length() == 0 ){	
						this.addActionError( "Debe seleccionar el archivo con la propuesta que desea enviar" );
					}
					if(!this.getArchivoContentType().trim().equals("application/pdf")){
						 this.addActionError("El tipo de archivo :"+ this.getArchivoContentType() +" no es valido, solo se permiten archivo PDF" );
			    	}
	    			Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
	    			String adjuntos="";
	    			String SQL="";
	    			String CODIGO_PRE="";
	    			try {
	    				StringBuilder sb = new StringBuilder();
	    				sb.append("/home/corporativo/prospectos/"+this.getCod_prospecto()+"/" );
	    				sb.append("precontrato.pdf" );
	    				File theFile = new File(sb.toString());
	    				FileUtils.copyFile( this.getArchivo() , theFile);
	    				adjuntos="/home/corporativo/prospectos/"+this.getCod_prospecto()+"/precontrato.pdf" ;
	    				Cadena C=new Cadena();
	    				LinkedList lst_cont=C.tokens(this.getContrato(), ",");
	    				LinkedList lst_suc1=C.tokens(this.getSucursal(), ",");
  		    	    	LinkedList lst_serv=C.tokens(this.getServicio(), ",");
  		    	    	LinkedList lst_prod=C.tokens(this.getProducto(), ",");
  		    	    	LinkedList lst_mont=C.tokens(this.getPrecio(), ",");
  		    	    	LinkedList lst_cods=C.tokens(this.getCod_item(), ",");
	    				if (this.getCod_precontrato().equals("-1") ){
	    					CODIGO_PRE=BASE.getBaseDatos().generarCodigo("corp_precontrato","codigo");
	    					SQL="INSERT INTO corp_precontrato (precontrato,codigo,prospecto,obs,usuario,fecha,hora,status,fecha_status,hora_status,usuario_status) VALUES(?,'"+CODIGO_PRE +"','"+ this.getCod_prospecto() +"','"+ this.getObs() + "','"+ USUARIO.getUsuario()+"','"+ FECHA +"','"+HORA+"','REGISTRADO','"+ FECHA +"','"+HORA+"','"+USUARIO.getUsuario()+"' )";
	    				}else{
	    					CODIGO_PRE=this.getCod_precontrato();
	    					SQL="UPDATE corp_precontrato set precontrato=?,obs='"+ this.getObs() +"',status='ACTUALIZADO',usuario_status='"+ USUARIO.getUsuario() +"',fecha_status='"+FECHA+"',hora_status='"+HORA+"'  where codigo='"+ CODIGO_PRE + "' ";
	    				}
	    				BASE.getBaseDatos().guardarArchivo(adjuntos, SQL);
	    				for(int i=0; i<lst_suc1.size();i++){
	    					String cod=lst_cods.get(i).toString();
  		    	    		String suc=lst_suc1.get(i).toString();
  		    	    		String ser=lst_serv.get(i).toString();
  		    	    		String pro=lst_prod.get(i).toString();
  		    	    		String con=lst_cont.get(i).toString();
  		    	    		String mon=lst_mont.get(i).toString();
  		    	    		mon=mon.replace(",", ".");
  		    	    		if(mon.trim().equals(""))
  		    	    			 mon="0";
  		    	    		if (this.getCod_precontrato().equals("-1")){
	  		    	    		if(!suc.equals("-1") && !ser.equals("-1") && !pro.equals("-1")   ){
		  		    	    		SQL="INSERT INTO corp_precontrato_detalle " +
			  	  		    			"(precontrato,sucursal,servicio,producto,contrato,monto) "+
			  	  		    			"VALUES('"+CODIGO_PRE+"','"+suc+"','"+ser+"','"+pro+"','"+con+"','"+mon+"' ) ";
	  		    	    		}
  		    	    	   }else{
  		    	    		   if(!suc.equals("-1") && !ser.equals("-1") && !pro.equals("-1") && !mon.equals("0") ){
	  		    	    		   SQL="UPDATE corp_precontrato_detalle SET " +
		  	  		    			  "servicio='"+ser+"',producto='"+pro+"',contrato='"+con+"',monto='"+mon+"' "+
		  	  		    			  "Where cod='"+cod+"' ";  
  		    	    		   }   
  		    	    	   }
  		    	    	  BASE.getBaseDatos().ejecutar(SQL);
  		    	    	}
	    			}catch (Exception e) {
	    				this.addActionError("Error al intentar cargar el archivo :"+ e.getMessage().toString()  );
	  		    	    return ERROR;
	    			}
	    			SQL="INSERT INTO corp_seguimiento_actividades (prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
		    			"VALUES('"+this.getCod_prospecto()+"','9','3','"+ this.getObs() +"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"','ENVIADO' )";
		    	    BASE.getBaseDatos().ejecutar(SQL); 
	    			Cadena C=new Cadena();
	    			String DESTINO=USUARIO.getEmail()+","+USUARIO.getEmail_sup(); 
	    			
	    			if(!C.enviarCorreo("sia@movilmax.com",DESTINO,"NUEVA ( FIRMA DE CONTRATO CARGADA )","Ha sido cargado un nuevo (FIRMA CONTRATO) con codigo="+ CODIGO_PRE +" , por el usuario "+USUARIO.getDescripcion(),adjuntos,"html")){
	    				this.addActionError("Error al intentar enviar el email "  );
	  		    	    return ERROR;
	    			}
  		    	    this.addActionMessage("Firma contrato cargado correctamente, recuerde que este debe ser estar firmado por el prospecto");
  		    	    this.addActionMessage("Copia enviada a :"+DESTINO+" para su debida revision");
  		    	    this.addActionMessage("Actividad registrada con fecha : ("+FECHA+" "+HORA+" )");
  		    	    //this.addActionMessage("Es necesario continuar con el paso ingresar site survey, para que el supervisor pueda aprobar y enviar al dpto. de planeacion ");
  		    	   // this.addActionMessage("Despues de haber sido aprobado el site survey por el supervisor, ud podra continuar con el paso ( GENERAR CHECK LIST ) " );
  		    	 return SUCCESS; 	
	    	  }catch(Exception err  ){
				    this.addActionError("Error: "+err.toString() );
			  } 
	    	  BASE.getBaseDatos().cerrarConexion(); 
		   }
		   else
			 this.addActionError("No hay conexion al servidor");  
	   } 
	  else
		  this.addActionError("La sesion del usuario ha caducado");   	
	
	   return ERROR;
	   
} 
    
    
    
   
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public String agregarPreContrato(){
		  BASE= new Conectar();
		  this.setCod_precontrato("-1");
		  tabla_prec= new ArrayList<ListaSs>();
		  String SQL="";
		  Map session = ActionContext.getContext().getSession();
		  Usuario USUARIO = (Usuario)session.get("ses_usuario");
		  if (USUARIO==null){	
			  this.addActionError("Tu sesion ha caducado");
			  return ERROR;
		   }
		  BASE= new Conectar();
		  if(BASE.getMsg().equals("SI")){
			  /*SQL="Select CONVERT(varchar(30),S.fecha_status,103)+' '+S.hora_status as fecha_stx,S.codigo,S.status as stx,S.obs,S.usuario "+
				  "	from corp_precontrato S "+
				  "	Where S.status in('REGISTRADO','ACTUALIZADO','RECHAZADO' )  Order by S.fecha DESC";*/
			  
			  SQL="Select CONVERT(varchar(30),S.fecha_status,103)+' '+S.hora_status as fecha_stx,S.codigo, "+
				  "S.status as stx,S.obs,S.usuario,D.cod,D.contrato,D.sucursal,D.monto,D.servicio,D.producto,P.descripcion as des_prod,X.descripcion as des_serv,Z.descripcion des_suc "+ 
				  "from corp_precontrato S,corp_precontrato_detalle D,corp_productos P,corp_servicios X,corp_sucursales Z "+
				  "Where S.prospecto='"+ this.getCod_prospecto() +"' and S.status in('REGISTRADO','ACTUALIZADO','RECHAZADO' ) "+
				  "and S.codigo=D.precontrato and D.producto=P.cod and D.servicio=X.cod and D.sucursal=Z.cod "+  
				  "Order by D.sucursal ASC ";
				 Resultado RCS=BASE.getBaseDatos().consultar(SQL);
				 if(RCS.RP){
						this.setCod_precontrato( RCS.getCadena("codigo"));
						this.setFecha(RCS.getCadena("fecha_stx"));
						this.setObs_status(RCS.getCadena("obs"));
						this.setStatus(RCS.getCadena("stx"));
						 if(RCS.RP){
							    do{ 
								  ListaSs LST=new ListaSs();
								  LST.setId(new Cadena().convertirStr(tabla_prec.size()+1));
								  LST.setCod(  RCS.getCadena("cod"));
								  LST.setSucursal(RCS.getCadena("sucursal"));
								  LST.setServicio(RCS.getCadena("servicio"));
								  LST.setProducto(RCS.getCadena("producto"));
								  LST.setDes_sucursal(RCS.getCadena("des_suc"));
								  LST.setDes_servicio(RCS.getCadena("des_serv"));
								  LST.setDes_producto(RCS.getCadena("des_prod"));
								  LST.setContrato(RCS.getCadena("contrato"));
								  LinkedList precio=new Cadena().tokens((new Cadena().convertirStr( RCS.getFloat("monto") )),".");
								  if( precio.get(1).toString().equals("0") ){
									   LST.setPrecio(precio.get(0).toString());
								  }else{
									   LST.setPrecio(precio.get(0).toString()+"."+precio.get(1).toString()); 
								  }
								  tabla_prec.add(LST);
					         }while(RCS.sigItem());
						  session.put("ses_ctd_prec", new Cadena().convertirStr((tabla_prec.size())) );    
					  }	    
				 }else{
					    this.setCod_precontrato("-1");
						this.setFecha( new Fecha().getFecha()+" "+ new Fecha().getHoras() );
						this.setObs_status("NINGUNO");
						this.setStatus("SIN REGISTRAR");
				 } 
				 BASE.getBaseDatos().cerrarConexion(); 
				 
		    }else{
		    	this.addActionError("No hay conexion al servidor");
		    	return ERROR;
		    }
		    String CTD= (String) session.get("ses_ctd_prec");
			if (CTD==null){
				 session.put("ses_ctd_prec", "4");
				 CTD="4";
			 }
			 Cadena C=new Cadena();
			 int ctdx=C.convertirInt(CTD);
			 for(int x=tabla_prec.size() ;x<ctdx;x++){
				  ListaSs LST=new ListaSs();
				  LST.setId(new Cadena().convertirStr( tabla_prec.size()+1 ));
				  LST.setCod("-1");
				  LST.setSucursal("-1");
				  LST.setServicio("-1");
				  LST.setProducto("-1");
				  LST.setDes_sucursal("Seleccione la sucursal");
				  LST.setDes_servicio("Seleccione el servicio");
				  LST.setDes_producto("Seleccione el servicio");
				  LST.setPrecio("0");
				  if(USUARIO.getSucursal().getCod().equals("8") || USUARIO.getSucursal().getCod().equals("9")){
				  LST.setContrato("VC-0000");
				  }else{
					  LST.setContrato("C-0000");  
				  }
				  tabla_prec.add(LST);
		     }
		  
		  return SUCCESS;
	  }
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public String agregarItemZ(){
		 Map session = ActionContext.getContext().getSession();
		 String CTD= (String)session.get("ses_ctd_prec");
		 if (CTD==null){
			 session.put("ses_ctd_prec", "4");
		 }else{
			 Cadena C=new Cadena();	
			 session.put("ses_ctd_prec", C.convertirStr(C.convertirInt( CTD )+1 ) );
		 }
		 return agregarPreContrato();
	}

	private String listar_sucursales(){
		lst_sucursales= new ArrayList<Listax>();
			  try{
				if(cod_prospecto==null)
					 return SUCCESS;
		    	String SQL="Select X.cod,UPPER(X.descripcion) as descripcion "+
	    	      "From corp_sucursales X  "+
	    	      "where X.prospecto='"+ this.getCod_prospecto() + "' and X.cliente='0' Order by X.cod ASC "; 	

				Resultado  RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
					  do{ 
						  Listax LST=new Listax();
						  LST.setCod(RCS.getCadena("cod"));
						  LST.setDescripcion(RCS.getCadena("descripcion"));
						  lst_sucursales.add(LST);
					  }while(RCS.sigItem()); 
				  }
			   }catch(Exception err  ){
					//hubo un error .....
			}  
		  return SUCCESS;
	} 
	private String listar_servicios() {
		lst_servicios= new ArrayList<Listax>();
			  try{
		       String SQL="Select X.cod,UPPER(X.descripcion) as descripcion "+
	    	      "From corp_servicios X  "+
	    	      "where X.mostrar='1' and X.prosp='1' Order by X.descripcion  "; 	 	

				Resultado  RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
					  do{ 
						  Listax LST=new Listax();
						  LST.setCod(RCS.getCadena("cod"));
						  LST.setDescripcion(RCS.getCadena("descripcion"));
						  lst_servicios.add(LST);
					  }while(RCS.sigItem()); 
				  }
			   }catch(Exception err  ){
					//hubo un error .....
			}  
		  return SUCCESS;
	} 
	
	@SuppressWarnings("rawtypes")
	private String listar_productos()  {
		lst_productos= new ArrayList<Listax>();
			  try{
				  String cod_serv="0";
				  Cadena C=new Cadena();
				  LinkedList vrs=C.tokens(this.getServicio(), ",");
				  for(int i=0; i<vrs.size();i++){
					  LinkedList ids= C.tokens(this.getId_obj(),"_") ;
					  String id_sel=ids.get(1).toString().trim();
					  if(id_sel.equals( C.convertirStr(i+1) ) ) {
						  cod_serv=vrs.get(i).toString();
					  }
				  }
		    	String SQL="Select X.cod,X.descripcion,X.megas "+
	    	      "From corp_productos X,corp_servicios_prod Z  "+
	    	      "where Z.servicio='"+ cod_serv +"' and Z.mostrar='1' and X.cod=Z.producto and X.mostrar='1' and X.megas>0 Order by X.megas ASC "; 	
				Resultado  RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
					  do{ 
						  Listax LST=new Listax();
						  LST.setCod(RCS.getCadena("cod"));
						  //LST.setDescripcion(RCS.getCadena("descripcion"));
						  LST.setDescripcion(RCS.getCadena("megas")+" Mbps");
						  lst_productos.add(LST);
					  }while(RCS.sigItem()); 
				  }
			   }catch(Exception err  ){
					//hubo un error .....
			}  
		  return SUCCESS;
	} 
	

	 public String getJSON(){
		@SuppressWarnings("rawtypes")
		Map session = ActionContext.getContext().getSession();
		  Usuario USUARIO = (Usuario)session.get("ses_usuario");
		  if (USUARIO==null){
			  this.addActionError("La sesion del usuario ha caducado");
			  return ERROR;
		  }
		 BASE= new Conectar();
		  if(BASE.getMsg().equals("SI")){	
			  listar_sucursales();
			  listar_servicios();
			  if(servicio!=null){
			    listar_productos();  
			  }
			  BASE.getBaseDatos().cerrarConexion(); 
			 return SUCCESS;
		  }else{
			  this.addActionError("No hay conexion al servidor");
		      return ERROR;
		  }
	    
      }
	
	public String getCod_prospecto() {
		return cod_prospecto;
	}
	public void setCod_prospecto(String cod_prospecto) {
		this.cod_prospecto = cod_prospecto;
	}
	public String getSucursal() {
		return sucursal;
	}
	public void setSucursal(String sucursal) {
		this.sucursal = sucursal;
	}
	public String getServicio() {
		return servicio;
	}
	public void setServicio(String servicio) {
		this.servicio = servicio;
	}
	public String getProducto() {
		return producto;
	}
	public void setProducto(String producto) {
		this.producto = producto;
	}
	public String getCod_item() {
		return cod_item;
	}
	public void setCod_item(String cod_item) {
		this.cod_item = cod_item;
	}
	public String getPrecio() {
		return precio;
	}
	public void setPrecio(String precio) {
		this.precio = precio;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public String getCod_precontrato() {
		return cod_precontrato;
	}
	public void setCod_precontrato(String cod_precontrato) {
		this.cod_precontrato = cod_precontrato;
	}
	public List<Listax> getLst_sucursales() {
		return lst_sucursales;
	}
	public void setLst_sucursales(List<Listax> lst_sucursales) {
		this.lst_sucursales = lst_sucursales;
	}
	public List<Listax> getLst_servicios() {
		return lst_servicios;
	}
	public void setLst_servicios(List<Listax> lst_servicios) {
		this.lst_servicios = lst_servicios;
	}
	public List<Listax> getLst_productos() {
		return lst_productos;
	}
	public void setLst_productos(List<Listax> lst_productos) {
		this.lst_productos = lst_productos;
	}
	public List<Listax> getLst_precios() {
		return lst_precios;
	}
	public void setLst_precios(List<Listax> lst_precios) {
		this.lst_precios = lst_precios;
	}
	public List<ListaSs> getTabla_prec() {
		return tabla_prec;
	}
	public void setTabla_prec(List<ListaSs> tabla_prec) {
		this.tabla_prec = tabla_prec;
	}
	public String getContrato() {
		return contrato;
	}
	public void setContrato(String contrato) {
		this.contrato = contrato;
	}
	public String getFecha() {
		return fecha;
	}
	public void setFecha(String fecha) {
		this.fecha = fecha;
	}
	public String getObs() {
		return obs;
	}
	public void setObs(String obs) {
		this.obs = obs;
	}
	public String getObs_status() {
		return obs_status;
	}
	public void setObs_status(String obs_status) {
		this.obs_status = obs_status;
	}
	public String getId_obj() {
		return id_obj;
	}
	public void setId_obj(String id_obj) {
		this.id_obj = id_obj;
	}
	public String getSel() {
		return sel;
	}
	public void setSel(String sel) {
		this.sel = sel;
	}
	public File getArchivo() {
		return archivo;
	}
	public void setArchivo(File archivo) {
		this.archivo = archivo;
	}
	public String getArchivoContentType() {
		return archivoContentType;
	}
	public void setArchivoContentType(String archivoContentType) {
		this.archivoContentType = archivoContentType;
	}
	public String getArchivoFileName() {
		return archivoFileName;
	}
	public void setArchivoFileName(String archivoFileName) {
		this.archivoFileName = archivoFileName;
	}
	public String getVal() {
		return val;
	}
	public void setVal(String val) {
		this.val = val;
	}
	public String getTipo() {
		return tipo;
	}
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}
}
